OSDOCS-20558: adds MCP multi-protocol support - #118534
Conversation
|
@ShaunaDiaz: This pull request references OSDOCS-20558 which is a valid jira issue. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
|
🤖 Fri Aug 21 12:21:17 - Prow CI generated the docs preview: |
0f32a58 to
c58901e
Compare
c58901e to
a3a3523
Compare
|
@ShaunaDiaz: all tests passed! Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
|
|
||
| The new stateless protocol has the following cloud-native pattern: | ||
|
|
||
| * Round-robin load balancing: Because any container instance can handle any incoming request, you can horizontally scale your stateful MCP servers behind a plain round-robin load balancer. |
There was a problem hiding this comment.
| * Round-robin load balancing: Because any container instance can handle any incoming request, you can horizontally scale your stateful MCP servers behind a plain round-robin load balancer. | |
| * Round-robin load balancing: Because any container instance can handle any incoming request, you can horizontally scale your stateless MCP servers behind a plain round-robin load balancer. |
| == How version detection works | ||
|
|
||
| When an MCP client SDK connects, the {mcpg} detects the MCP protocol version by using the following sequence: | ||
| //Q: is this really just an MCP client? |
There was a problem hiding this comment.
Yes the client is used by agents etc to interact with MCP servers
| |=== | ||
|
|
||
| [id="con-mcp-gateway-multi-protocol-tool-visibility_{context}"] | ||
| == Tool visibility by protocol version |
There was a problem hiding this comment.
just to note that a some MCP servers can support both protocols. So the below is still true but might be an interesting thing to add in that the gateway can front servers that support both stateless and stateful protocols and due to the negotiation show the compatible tools to the client
| = Set MCP protocol-specific routes | ||
|
|
||
| [role="_abstract"] | ||
| The {mcpg} exposes two endpoints on every Model Context Protocol (MCP) listener. You can use the default endpoint for automatic version negotiation, or the stateful endpoint to force the `2025-11-25` protocol version. |
There was a problem hiding this comment.
Yeah the /stateful endpoint is there to allow for the fact there may be different tools based on the protocol and the current state of the MCP Servers behind the gateway. This allows for 2026 protocol negotiation but if there is something you still need to use 2025 for you can set up a second "MCP Server" config that points at the gateways /stateful endpoint. From a client perspective it thinks there are two distinct MCP servers but actually they both are going to the same gateway.
| "2026-07-28" | ||
| ] | ||
| ---- | ||
| //Q: what if it accepts only the older version? No newline at end of file |
There was a problem hiding this comment.
it will still show the result but will only show 2025-11-25 as being available
|
|
||
| |Routing | ||
| |Body-parsed: JSON-RPC method and parameters | ||
| |Header-based: `Mcp-Method`, `Mcp-Name` |
There was a problem hiding this comment.
note we do need to parse and transform the body if there is a prefix used as we need to strip this from the tool call
Version(s):
rhcl-docs-1.5
Issue:
OSDOCS-20558
Link to docs preview:
https://118534--ocpdocs-pr.netlify.app/rhcl/latest/mcp_gateway_config/mcp-gateway-multi-protocol-support.html
QE review:
Additional information:
Release note PR, #118615